#include <stdio.h>
/*
int * ptr1; //默认有指向
int * ptr2; //默认有指向

*   解引用
&   取地址

+   指针的 + 法 ptr1 + 1  ptr1++
-   指针的 - 法 ptr1 - 1  ptr1--
-   指针的 - 法 ptr1 - ptr2    指针差

[]  下标

==      判断是否相等
> | <   判断是否大于或小于
>= | <= 同上

=       赋值运算符

*/

int main(int argc, char const *argv[])
{
    int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int * ptr_1 = arr;
    int * ptr_2 = arr;

    printf("ptr_1 = %p \nptr_2 = %p\n" , ptr_1 , ptr_2);

    // =================== 指针的+运算 ===================
    ptr_1++;
    // 每次 ++ 增长 一个步长   向右移动
    printf("ptr_1 = %p\tptr_1 = %d\n" , ptr_1 , *ptr_1);

    // =================== 指针的-运算 ===================
    ptr_1--;
    // 每次 -- 减少 一个步长   向左移动
    printf("ptr_1 = %p\tptr_1 = %d\n" , ptr_1 , *ptr_1);

    // =================== 指针的 指针差 运算 ===================
    ptr_1 += 5;
    // 指针差 用于计算 两个指针 之间的距离 以步长为单位
    printf("ptr_1 - ptr_2  = %ld\n" ,ptr_1 - ptr_2);

    // =================== 指针的 下标 运算 ===================
    // [] 下标运算符 可以直接对数据进行访问 不需要解引用
    //     关于指针的移动问题  使用下标是 从当前位置 为 [0] 
    printf("ptr_1 = %p\tptr_1 = %d\n" , &ptr_1[1] , ptr_1[1]);

    // =================== 指针的 判断 运算 ===================
        // 
    if (ptr_1 > ptr_2)
    {
        printf("ptr_1 > ptr_2 条件成立\n");
        printf("ptr_1 = %p\n" , ptr_1);
        printf("ptr_2 = %p\n" , ptr_2);
    }
    // =================== 指针的 赋值 运算 ===================
        // = += -=

    return 0;
}
